package com.jichangxiu.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jichangxiu.system.entity.dto.add.AddSysType;
import com.jichangxiu.system.entity.dto.edit.EditSysType;
import com.jichangxiu.system.entity.dto.query.QuerySysType;
import com.jichangxiu.system.entity.po.SysType;
import com.jichangxiu.system.entity.vo.SysTypeVo;
import com.jichangxiu.framework.service.BaseService;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * SysTypeService:
 *
 * @author JiChangXiu
 * @create 2024-06-28 13:44:54
 */
public interface SysTypeService extends BaseService<SysType, SysTypeVo> {

    /**
     * 新增系统类型
     *
     * @param addSysType 新增系统类型视图对象
     * @return 是否成功
     */
    public Boolean add(AddSysType addSysType);

    /**
     * 单（多）选删除系统类型
     *
     * @param idList 系统类型主键列表
     * @return 是否成功
     */
    public Boolean del(List<String> idList);

    /**
     * 修改系统类型
     *
     * @param editSysType 修改系统类型视图对象
     * @return 是否成功
     */
    public Boolean edit(EditSysType editSysType);

    /**
     * 根据主键查询系统类型
     *
     * @param id       系统类型主键
     * @param isExtend 是否扩展
     * @return 系统类型详情
     */
    public SysTypeVo info(@NotBlank(message = "主键不能为空") String id, Boolean isExtend);

    /**
     * 根据标识查询系统类型
     *
     * @param code     系统类型标识
     * @param isExtend 是否扩展
     * @return 系统类型详情
     */
    public SysTypeVo infoByCode(@NotBlank(message = "标识不能为空") String code, Boolean isExtend);

    /**
     * （可分页）查询系统类型列表
     *
     * @param querySysType 查询视图对象
     * @return （分页）系统类型列表
     */
    public Page<SysTypeVo> lists(QuerySysType querySysType);

}